2024 Japan Grand Prix¶

管理人さん、こんにちは and welcome to the Japanese Grand Prix of 2024 race report! Another early morning start for this one, though not quite as bright and early as Australia, for a race that has seen multiple early red flags or weather-related delays in the past. It certainly was a risk to get up for a 6am start, but there was a very interesting aspect to this race thrown up by a lap 1 red flag. So let's get into it.

Rumours are circling again that Christian Horner is about to purchase the Red Bull Motorsport division, with backing from the Thai shareholders. The move is rumoured to be the reason for the recent allegations that have once again been dismissed by the Austrian brand. It is thought that a Horner-owned brand would see the end of the involvement of Dr Helmut Marko, the brain behind the Red Bull junior program.

There are also rumours circling that the 4-time world champion Sebastian Vettel is linked to a move to Mercedes to replace Lewis Hamilton in 2025. These rumours have been backed by a recent BBC radio interview with the German driver, and speculation from the Mercedes camp sparked by a comment from Toto Wolff that the pair are in "constant contact". There has been much speculation as to who could replace the British driver going forward, with many assuming that Kimi Antonelli or Alex Albon could see a promotion through the Mercedes and Williams junior academy and Mercedes ties, respectively. Mercedes are yet to confirm who will be replacing the 7-time champion, though it has also been thought that 2-time champion Fernando Alonso could make the switch, with recent sightings of the Spaniard and his manager Flavio having lunch with Wolff fuelling the fire. A return from the German Red Bull star, and former Ferrari race winner, would be a welcome sight, though I suspect it will come with certain external commitment requirements from Vettel's side as he is likely unwilling to give up the philanthropy.

In [ ]:
import os
import subprocess
import src.dataIO as io
import src.webDataIO as wio

from pathlib import Path

year = 2024
race = 'Japan'

Grand Prix Report¶

After the wild fury at Williams forcing Logan Sargeant to sit out the Australian Grand Prix when his teammate damaged one of their two chassis in free practice two weeks ago, all the American driver needed to do this week was show that he was the driver they should have favoured down under. But that wasn't the case, as at the first point of asking, Logan ran wide at the end of sector 1, touched the grass, and ploughed his Williams into the barrier, damaging the front suspension, steering rack, and rear components. Thankfully, for Williams, he didn't ruin the recently repaired chassis (yes he was using Alex's old one from Australia for some reason), but this really isn't a good look from the young American hotshot.

Intermittent weather in free practice 2 meant that a lot of the teams didn't get to do qualifying simulations. Notably, Ferrari, who only managed a handful of laps in the entire session due to fear of using too many intermediate tyre sets. Charles was not particularly happy at the end of qualifying with the Scuderia, stating that they barely had any time to optimise the setup for qualifying, something he has become somewhat of an expert in.

Qualifying Report¶

It was a close fight for pole position between the Red Bull pair, with the final gap just 0.066 seconds in favour of Max. The dutchman put in the fastest time in all three sessions, but Perez gave him a good run for his money in Q2 and Q3. The Red Bull has been a class above the rest at Suzuka for many years, with the Austrian team putting a heavy reliance on aerodynamic performance during an era of Mercedes engine dominance that has continued into the new era. The two former teammates Lando Norris and Carlos Sainz both put in strong performances to out-qualify their current teammates for third and fourth on the grid, with the slight advantage going to the Brit. Despite a strong qualifying performance, I am still struggling to comprehend how he can be so highly valued in the fantasy ecosystem, though more on this later.

A standout performance for home-hero Yuki Tsunoda this week, though it should not be understated that he only just beat teammate Ricciardo in Q2 to make it through to the final stages. A gap of 0.055 seconds between the two in favour of the Japanese sensation. Yuki showed some real maturity in his racing all weekend, not wanting to disappoint the home crowd that's for sure. I should also mention some other great performances from Valtteri Bottas in thirteenth and Nico Hulkenberg in twelfth on the grid, both drivers outperforming the car this week.

It was a poor session for Lance Stroll, the Canadian veteran of the sport (now) complaining all weekend about poor straight-line performance. Not an issue for his teammate, but Lance went out in Q1 in sixteenth position ahead of Alpine's Pierre Gasly who suffers another poor qualifying performance in that hideous looking car. Alpine report significant performance gains due to some weight saving, but we are yet to see that translate to on-track gains.

In [ ]:
wio.outputs_qualifying_data(
    year=year,
    race=race)
Pos No Driver Car Q1 Q2 Q3 Laps
1 1 Max Verstappen VER Red Bull Racing Honda RBPT 1:28.866 1:28.740 1:28.197 12
2 11 Sergio Perez PER Red Bull Racing Honda RBPT 1:29.303 1:28.752 1:28.263 12
3 4 Lando Norris NOR McLaren Mercedes 1:29.536 1:28.940 1:28.489 13
4 55 Carlos Sainz SAI Ferrari 1:29.513 1:29.099 1:28.682 12
5 14 Fernando Alonso ALO Aston Martin Aramco Mercedes 1:29.254 1:29.082 1:28.686 12
6 81 Oscar Piastri PIA McLaren Mercedes 1:29.425 1:29.148 1:28.760 12
7 44 Lewis Hamilton HAM Mercedes 1:29.661 1:28.887 1:28.766 15
8 16 Charles Leclerc LEC Ferrari 1:29.338 1:29.196 1:28.786 12
9 63 George Russell RUS Mercedes 1:29.799 1:29.140 1:29.008 15
10 22 Yuki Tsunoda TSU RB Honda RBPT 1:29.775 1:29.417 1:29.413 18
11 3 Daniel Ricciardo RIC RB Honda RBPT 1:29.727 1:29.472 12
12 27 Nico Hulkenberg HUL Haas Ferrari 1:29.821 1:29.494 12
13 77 Valtteri Bottas BOT Kick Sauber Ferrari 1:29.602 1:29.593 12
14 23 Alexander Albon ALB Williams Mercedes 1:29.963 1:29.714 9
15 31 Esteban Ocon OCO Alpine Renault 1:29.811 1:29.816 12
16 18 Lance Stroll STR Aston Martin Aramco Mercedes 1:30.024 6
17 10 Pierre Gasly GAS Alpine Renault 1:30.119 6
18 20 Kevin Magnussen MAG Haas Ferrari 1:30.131 9
19 2 Logan Sargeant SAR Williams Mercedes 1:30.139 6
20 24 Zhou Guanyu ZHO Kick Sauber Ferrari 1:30.143 6

Race Report¶

The Max Verstappen revenge tour was in full swing during the race, with the reigning champion winning from pole position. It wasn't all smooth sailing, with teammate Sergio Perez giving a decent fight in the early stages of the race, but the reality is Max probably had some in the bank in the event that he got too close. Max beat Perez by just over 12 seconds in the end, with the pair a further 8 seconds clear of Ferrari's Carlos Sainz. Last week's race winner put in a strong performance to beat Lando and his own teammate to take that final step on the podium.

The race was not all it seems from the result. An early incident between William's Alex Albon and RB's Daniel Ricciardo brought out a lap 1 red flag. The Thai driver went for a gap that was always going to close and had a little bit of nerve to try and blame the former Red Bull race winner, but really it was more of a racing incident. Nevertheless, the early red flag gave the opportunity for a varied strategy option for many up and down the field. Some chose a two stop, changing in the red flag, some a three changing in the red flag, some a three not changing in the red flag, and Mercedes chose to screw themselves over. More on that shortly. This aspect of the race really reminded me of the 2011-2013 seasons where the tyres would rapidly drop off a cliff and you'd have drivers on brand new tyres just honing in on those struggling with their rubber. A nice throwback.

Driver of the day, Charles Leclerc put in a masterful performance to stretch out the medium tyres and over-cut most of the top ten. The radio messages between him and his engineer are painful to listen to, but their trust that Charles could complete Plan C proved to be worthwhile, despite finishing 6 seconds behind his teammate, it could well have resulted in a podium. Mercedes, on the other hand, looked as though they had no idea what tyre strategy they wanted to do. After the red flag, both silver arrows went onto the hard tyre, which initially saw them lose a lot of track position, but started to come to fruition when the others pitted. They were trying to go for the 2 stop with a red flag change, much like Leclerc, with a second hard tyre, but were easily monstered up by the fresher rubber around them. Just when it looked like maybe they could get an easy seventh and eighth, they decided to pit both drivers for some softer tyres and lose more positions. They really don't look like the team that won eight straight constructors' championships at the moment, and I don't think they will for a long time yet.

Points for Tsunoda on home soil with the Japanese driver putting in a solid and mature performance in the race to beat a chasing Hulkenberg and Stroll to that last remaining point while his teammate was in the barrier. By contrast, both Alpine drivers seemed to go backwards during the race, despite rumours of recent performance gains from the French outfit who only managed to beat Logan Sargeant this week. Speaking of whom, the American driver locked up going into Degna 2 and then dangerously reversed back onto the track. This, in my opinion is totally unacceptable. I haven't seen if he was penalised yet, but he definitely should be. reversing onto a live track has always been dangerous, but Suzuka is particularly notorious for big accidents, and this is a 90 degree corner with a blind entry point. Not ok on any level.

In [ ]:
wio.outputs_race_result(
    year=year,
    race=race)
Pos No Driver Car Laps Time/Retired PTS
1 1 Max Verstappen VER Red Bull Racing Honda RBPT 53 1:54:23.566 26
2 11 Sergio Perez PER Red Bull Racing Honda RBPT 53 +12.535s 18
3 55 Carlos Sainz SAI Ferrari 53 +20.866s 15
4 16 Charles Leclerc LEC Ferrari 53 +26.522s 12
5 4 Lando Norris NOR McLaren Mercedes 53 +29.700s 10
6 14 Fernando Alonso ALO Aston Martin Aramco Mercedes 53 +44.272s 8
7 63 George Russell RUS Mercedes 53 +45.951s 6
8 81 Oscar Piastri PIA McLaren Mercedes 53 +47.525s 4
9 44 Lewis Hamilton HAM Mercedes 53 +48.626s 2
10 22 Yuki Tsunoda TSU RB Honda RBPT 52 +1 lap 1
11 27 Nico Hulkenberg HUL Haas Ferrari 52 +1 lap 0
12 18 Lance Stroll STR Aston Martin Aramco Mercedes 52 +1 lap 0
13 20 Kevin Magnussen MAG Haas Ferrari 52 +1 lap 0
14 77 Valtteri Bottas BOT Kick Sauber Ferrari 52 +1 lap 0
15 31 Esteban Ocon OCO Alpine Renault 52 +1 lap 0
16 10 Pierre Gasly GAS Alpine Renault 52 +1 lap 0
17 2 Logan Sargeant SAR Williams Mercedes 52 +1 lap 0
NC 24 Zhou Guanyu ZHO Kick Sauber Ferrari 12 DNF 0
NC 3 Daniel Ricciardo RIC RB Honda RBPT 0 DNF 0
NC 23 Alexander Albon ALB Williams Mercedes 0 DNF 0

Fastest Lap¶

Fastest lap goes to Max Verstappen this week, who went fastest towards the very end of the race with a lap time of 1:33.706 and an average speed of 223.093 km/h. On very used tyres, it seems there was still plenty left in the tank for Max to take pole, win, and fastest lap for maximum points scoring opportunity.

In [ ]:
wio.outputs_fastest_lap(
    year=year,
    race=race)
Pos No Driver Car Lap Time of day Time Avg Speed
1 1 Max Verstappen VER Red Bull Racing Honda RBPT 50 15:53:20 1:33.706 223.093
2 55 Carlos Sainz SAI Ferrari 46 15:47:21 1:33.841 222.772
3 11 Sergio Perez PER Red Bull Racing Honda RBPT 35 15:29:48 1:33.945 222.525
4 44 Lewis Hamilton HAM Mercedes 41 15:39:55 1:33.952 222.509
5 63 George Russell RUS Mercedes 39 15:36:37 1:34.404 221.444
6 14 Fernando Alonso ALO Aston Martin Aramco Mercedes 53 15:58:49 1:34.726 220.691
7 81 Oscar Piastri PIA McLaren Mercedes 35 15:30:07 1:34.802 220.514
8 2 Logan Sargeant SAR Williams Mercedes 43 15:44:56 1:34.900 220.286
9 16 Charles Leclerc LEC Ferrari 53 15:58:31 1:35.044 219.952
10 4 Lando Norris NOR McLaren Mercedes 51 15:55:23 1:35.186 219.624
11 27 Nico Hulkenberg HUL Haas Ferrari 52 15:58:12 1:35.325 219.304
12 18 Lance Stroll STR Aston Martin Aramco Mercedes 41 15:40:30 1:35.798 218.221
13 31 Esteban Ocon OCO Alpine Renault 52 15:58:46 1:36.232 217.237
14 22 Yuki Tsunoda TSU RB Honda RBPT 51 15:56:28 1:36.342 216.989
15 77 Valtteri Bottas BOT Kick Sauber Ferrari 25 15:14:21 1:36.608 216.392
16 10 Pierre Gasly GAS Alpine Renault 48 15:52:25 1:36.642 216.315
17 20 Kevin Magnussen MAG Haas Ferrari 24 15:12:43 1:36.654 216.289
18 24 Zhou Guanyu ZHO Kick Sauber Ferrari 9 14:47:44 1:37.160 215.162

Fantasy League Scores¶

Lineup Scores¶

Ok I think I have waffled enough, let's see what this race has done to the fantasy league standings. First let's begin with the driver/team points for the grid. The data you see below are the current total points and values for each driver and team. Values are taken going into the race and updated for next race after I submit the report.

In [ ]:
weekly_scores = {
    "Name": ["Points", "Value"],
    "Race": [f'{race}'],
    "Ocon": [20, 8.6],
    "Gasly": [-4, 7.4],
    "Stroll": [20, 12.0],
    "Alonso": [46, 16.3],
    "Leclerc": [128, 21.4],
    "Sainz": [110, 19.8],
    "Bearman": ["N/A", "N/A"],
    "Magnussen": [31, 7.7],
    "Hulkenberg": [27, 7.2],
    "Bottas": [9, 5.9],
    "Guanyu": [-4, 6.8],
    "Norris": [66, 23.5],
    "Piastri": [64, 19.7],
    "Hamilton": [4, 19.0],
    "Russell": [45, 18.7],
    "Tsunoda": [19, 8.1],
    "Ricciardo": [-6, 9.2],
    "Verstappen": [118, 29.7],
    "Perez": [117, 22.4],
    "Albon": [-10, 7.2],
    "Sargeant": [19, 5.9],
    "Alpine": [16, 8.0],
    "Aston Martin": [96, 14.5],
    "Ferrari": [282, 20.9],
    "Haas": [68, 7.2],
    "Kick Sauber": [5, 6.2],
    "McLaren": [170, 23.9],
    "Mercedes": [89, 19.8],
    "RB": [31, 8.8],
    "Red Bull": [319, 28.2],
    "Williams": [13, 6.6]}
root = Path().absolute()
if Path(f'{root}/Data/{year}/Lineup/{race}_Results.json').is_file():
    pass
else:
    io.save_json_dicts(
        out_path=Path(f'{root}/Data/{year}/Lineup_Weekly.json'),
        dictionary=weekly_scores)
subprocess.run(["python", "lineup.py", f'{year}'])
Out[ ]:
CompletedProcess(args=['python', 'lineup.py', '2024'], returncode=0)

Max Verstappen outclassed the field this week with a whopping 47 points, some 14 ahead of teammate Sergio Perez in second with 33 points. Then come the Ferrari duo of Charles Leclerc and Carlos Sainz with 31 and 28 points, respectively. The Monegasque taking the Ferrari honours this week with some serious positions gained during the race, despite being beaten position-wise in both sessions y Sainz. Lando Norris rounds out the top five drivers this week with 19 points, not really showing why he is worth more than Perez, Sainz, and Leclerc. The three DNFs this week were at the bottom of the table this week, Alex Albon taking home -20 points, Ricciardo with -19 , and Zhou with -17 points after his gearbox failure. In fourth place, we have a three-way tie between Pierre Gasly, Esteban Ocon, and 7-time champion Lewis Hamilton, all bringing home 5 points. Rounding out the bottom five is Valtteri Bottas with 8 points.

Red Bull return to form this week, coming in with 108 points, almost double second place Ferrari with 59. In third place it's McLaren with 39. At the bottom of the table it's Williams with -10 points, closely followed by Kick Sauber with -8 and RB with -4 points. The DNFs there really affecting those three teams.

Charles Leclerc continues to hold on to the lead of the championship with 128 points ahead of Red Bull's Max Verstappen, who can only muster 118. Certain other fantasy trackers are showing Carlos Sainz as the top of the table, but what they're forgetting is that Oliver Bearman was a separate token, with a separate price, and scored points separately. Take that as you will, but I will not compromise the integrity of this list. Max may be on the way up, but a DNF in Australia has really held the Dutchman back. In fact, he is only 1 point ahead of teammate Sergio Perez in third with 117 points. In fourth place it's Carlos Sainz with 110 points. Lando Norris rounds out the top five drivers at the moment, though he has nearly half the points of Sainz ahead with only 66 points. Lando's value continues to rise, for some reason. Alex Albon sinks to the bottom of the standings after his DNF this week, the Thai driver only holding on to -10 points, just 4 ahead of Daniel Riccirdo with -6 points, the pair really suffering after a poor performance early in the year. Pierre Gasly is in third at the bottom of the table with -4, he's not had the best of luck in the start of 2024 but it's still very telling that the Frenchman is down at the bottom. He shares third with Guanyu Zhou. While my dislike for Lewis is unwavering, it is a shame to see the Mercedes man make the bottom five in the standings in fourth with only 4 points, his former teammate Valtteri Bottas rounds out the bottom five with only 9 to his name.

Red Bull return to the top of the standings this week with 319 points, edging out a lead of second place Ferrari with 282 points. These pair are leaps ahead of third place McLaren who are really in a league of their own with 170 points. Kick Sauber are at the bottom of the table with a total of 5 points, which is still less than most of their pit stops this year. Williams are next with 13, and Alpine round out the bottom three with 16 points.

In [ ]:
points_files = [
    'Driver_Points_Bar.png',
    'Team_Points_Bar.png',
    'Driver_Sum Points.png',
    'Team_Sum Points.png']
directory_path = Path(f'{root}/Data/{year}/Figures/{race}')
file_paths = [Path(f'{directory_path}/{race}_{file}') for file in points_files]
[io.display_img(file_path=path, width=1200, height=720) for path in file_paths]
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Out[ ]:
[None, None, None, None]

After a DNF in Australia, Max's value took a severe hit, dropping him back down below the $30m mark with $29.7m. He's still very expensive, but if you were planning on selling him any time soon, I wouldn't. Lando Norris, for some reason, continues to go up in value. I really do not understand this, why is someone who hasn't won a race, hasn't particularly outscored better drivers, earned such a high value? Sergio Perez holds on to third, increasing by $0.3m this week to reach $22.4m. Valtteri Bottas and Logan Sargeant are your cheapest options at the moment, the pair both costing $5.9m. The Kick Sauber second driver, Zhou, is in second with a value of $6.8m going into the weekend, while Alex Albon and Nico Hulkenberg are your third cheapest with $7.2m value. Red Bull maintain their value at the top of the table with $28.2m, and Kick Sauber were once again your cheapest option with $6.2m.

In [ ]:
average_files = [
    'Driver_Values_Bar.png',
    'Team_Values_Bar.png',
    'Driver_Average Points.png',
    'Team_Average Points.png']
directory_path = Path(f'{root}/Data/{year}/Figures/{race}')
file_paths = [
    Path(f'{directory_path}/{race}_{file}') for file in average_files]
[io.display_img(file_path=path, width=1200, height=720) for path in file_paths]
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Out[ ]:
[None, None, None, None]

Max was your best value for money this week with a points per value of 1.59 points/$m, closely followed by Logan Sargeant! Yes the Williams driver brought home 1.53 points/$m, not it does help that he's worth not a lot and he beat his teammate, but still, a good value for money there. Perez is in third with a 1.47 points/$m, ahead of Charles Leclerc with 1.45 points/$m and Sainz with 1.41 points/$m. A poor week for Albon at the bottom of the table with -2.78 points/$m behind Zhou with -2.5 points/$m and Ricciardo with -2.07 points/$m. Hamilton's high value see him secure fourth at the bottom of the table with 0.26 points/$m, just behind Piastri with 0.51 points/$m. Red Bull top your value for money this week with 3.83 points/$m, while Williams bottom out with -2.78 points/$m.

In [ ]:
ppv_files = [
    'Driver_Points Per Value_Bar.png',
    'Team_Points Per Value_Bar.png',
    'Driver_Average Points Per Value.png',
    'Team_Average Points Per Value.png']
directory_path = Path(f'{root}/Data/{year}/Figures/{race}')
file_paths = [Path(f'{directory_path}/{race}_{file}') for file in ppv_files]
[io.display_img(file_path=path, width=1200, height=720) for path in file_paths]
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Out[ ]:
[None, None, None, None]
In [ ]:
subprocess.run(["python", "manager.py", f'{year}'])
Out[ ]:
CompletedProcess(args=['python', 'manager.py', '2024'], returncode=0)

Manager Scores¶

Let's take a look at the winners and losers of the week. Japan is part of the Continental Prizes, and is the third race in that category, so all the points scored this week are essential for the prize pot there! It's a strong score for Jake and One Red Bull Car & Gasly this week with a whopping 338 points, leaps ahead of the rest of the field. Jake used a limitless token this week to eek out any advantage he could over the field, but is it too early to be blowing tokens like that? Only time will tell. In second, third, and fourth we have Stefanus with Syahrul, Haryanto, and Gelael with 271, 238, and 239 points, respectively. Stefanus is really putting in the work early in the season to take top steps in the championship. Rounding out the top five is James and Bwoah Moet Shell Racing with 235 points. Another top five performance from Bwoah Industries after their turn around over the winter break.

Down in the Alpine pit garage, it's James and Bwoah Rolex Sipsmith Golf who take the lowest score this week with a mere 10 points. They're closely followed by Stuart and Ferrari Strategists with 16, Patrick and Racing No Points with 22, and Joe and Alpine Sandbags with 23 points, in second, third, and fourth respectively. Rounding out the bottom five is Charlie and Lee Carvallo's F1 Challen with 28 points this week.

Holding on to that top step in the championship for another week is Stefanus and Haryanto with a storming 924 points after only four races. The rookie sensation is taking no prisoners with their second team Syahrul taking second place this week with 891 points. They are closely followed by Toby and Hesketh 2.1, the successor to Hesketh 2.0 staying put in third place with 851 points. Reigning champion Patrick and Johnny UniHaas are next in fourth with 833 points, and Stefanus rounds out the top five with Gelael and 793 points.

At the bottom end of the table it's still Patrick and Racing No Points who hold on to the lead with 69 points, the only team with less than 100 points in the entire field. In second we have Joe and Alpine Sandbags with 113, almost double the leader's points. In third place and close behind is Stuart and Ferrari Strategists with 116 points, and weekly winner James and Bwoah Rolex Sipsmith Golf are in fourth with 124 points. Rounding out the bottom five is Will and The Big One with 137 points. It's very close in the chasing pack down there.

In [ ]:
team_files = [
    'LeagueTeams_Points_Bar.png',
    'LeagueManagers_Average Points_Bar.png',
    'LeagueTeams_Sum Points.png',
    'LeagueManagers_Sum Points.png']
directory_path = Path(f'{root}/Data/{year}/Figures/{race}')
file_paths = [
    Path(f'{directory_path}/{race}_{file}') for file in team_files]
[io.display_img(file_path=path, width=1200, height=720) for path in file_paths]
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Out[ ]:
[None, None, None, None]

Alex Albon continues his run of most used driver again this week, the Thai driver having a complete strangle hold over this fantasy league for four races in a row. He has been used a total of 36 times this week, out of a possible 65. In a close second is Max Verstappen who comes in with 31 uses, those two are staying put in your teams as those numbers match up to last week. Launching up the order, however, is Japanese superstar Yuki Tsunoda, the home favourite taking a joint third with Charles Leclerc this week with 22 uses each. In fourth place is Valtteri Bottas, moving up a place on the table with 21 uses, the same as last week. Rounding out the top five used drivers is a triple threat of Daniel Ricciardo, Nico Hulkenberg, and Fernando Alonso with 20 uses of the possible 65. For some reason Oliver Bearman gets 2 uses this week, the rookie Ferrari man not actually making an appearance since Saudi Arabia, but still holding strong in some sneaky Golf Team. Oscar Piastri is the least used of the actual drivers with 6, closely followed by the Mercedes pairing of Russell and Hamilton with 8 and 9 uses, respectively. Hamilton is tied for fourth least used driver with Perez and Sainz, all coming in with 9 uses. In Fifth is Lance Stroll, no comment. Ferrari top the charts again this week, gaining a selection to 28 of 65 uses, followed by RB with 19 and Red Bull with 17. Alpine are sticking firth with 6 of 65 selections, followed by Aston Martin and McLaren with 7 and 8 selections, respectively.

Verstappen tops the charts for most selected DRS Boost, and in this regards it's not even a competition, the Dutchman sitting on 31 of 65 DRS boost selections. No Extra DRS tokens used this week, but we do have 1 wildcard, 1 no negative, and 1 limitless token used.

In [ ]:
count_files = [
    'LeagueCounts_Driver_Bar.png',
    'LeagueCounts_Constructor_Bar.png',
    'LeagueCounts_DRS Boost_Bar.png',
    'LeagueCounts_Extra DRS_Bar.png',
    'LeagueCounts_Perks_Bar.png']
directory_path = Path(f'{root}/Data/{year}/Figures/{race}')
file_paths = [
    Path(f'{directory_path}/{race}_{file}') for file in count_files]
[io.display_img(file_path=path, width=1200, height=720) for path in file_paths]
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Out[ ]:
[None, None, None, None, None]

For more figures, please see the Facebook group album.

In [ ]:
subprocess.run(["python", "league_prizes.py", f'{year}'])
Out[ ]:
CompletedProcess(args=['python', 'league_prizes.py', '2024'], returncode=0)

Prizes¶

Japan marks the third race in the Continental prize for highest scores across the Bahrain, Australian, Japanese, Canadian, British, Italian, and Mexican Grand Prix. After three rounds, Stefanus leads the way with haryanto and 725 points, and they take second with Syahrul and 706 points too. Toby and Hesketh 2.1 are next with 643, followed by James and Bwoah OnlyFans VIP Racing with 602 points in fourth place. Rounding out the top five is Jake and One Red Bull Car & Gasly with 589 points after a strong weekend in Japan. Down at the bottom of that list is Patrick and Racing No Points with 86, closely followed by Stuart and Ferrari Strategists with 98 points. Then it's James and Bwoah Rolex Sipsmith Golf with 105, with Charlie and Lee Carvallo's F1 Challen in fourth with 110. Will rounds out the lowest 5 in the Continental with 113 points.

China next week is a sprint race, which means we have our first of the 6 sprint king races. It's all to play for, best of luck to you all.

In [ ]:
directory_path = Path(f'{root}/Data/{year}/Figures/Prizes')
file_paths = [
    Path(f'{directory_path}/{file}') for file in
    os.listdir(directory_path) if f'{race}' in file]
[io.display_img(file_path=path, width=1200, height=720) for path in file_paths]
No description has been provided for this image
No description has been provided for this image
Out[ ]:
[None, None]

F1 Play¶

A strong performance for Josh in the F1 Play league continues for another week, with 6/10 scored, putting them in the top 13% of the players. Stuart manages a strong 4/10, with Matty languishing behind with 0/10. That takes the scores to:

Stuart - 14

Josh - 13

Matty - 4

In [ ]:
F1_play = {
    "Stuart S": [3, 5, 2, 4],
    "Matty J": [2, 2, 0, 0],
    "Josh M": [2, 3, 2, 6]}
io.save_json_dicts(
    out_path=Path(f'{root}/Data/{year}/F1_Play.json'),
    dictionary=F1_play)
subprocess.run(["python", "F1_play.py", f'{year}'])
points_files = [
    'Points.png',
    'Sum Points.png',
    'Average Points.png']
directory_path = Path(f'{root}/Data/{year}/Figures/F1_Play')
file_paths = [Path(f'{directory_path}/{race}_F1Play_{file}') for file in points_files]
[io.display_img(file_path=path, width=1200, height=720) for path in file_paths]
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Out[ ]:
[None, None, None]

Next Up¶

The next race is China, with a sprint shootout early on Friday morning, a sprint race very early Saturday morning, qualifying on Saturday morning, and a nice 8am race start on Sunday. China is the first of our sprint races, so make use of those extra sessions wisely! Best of luck to you all.